package Map;
/*
* java.util.Map查找表
* Map体现的样子是一个多行两列的表格，其中左列称为key，右列称为value
* Map总是根据key获取相应的value
* Map要求key不允许重复(key的equals方法作为判定重复的依据)
*
* 常用实现类：
* java.util.HashMap，散列表，当今查询速度最快的数据结构
* */
import java.util.HashMap;
import java.util.Map;

public class MapDemo1 {
    public static void main(String[] args) {
        Map<String ,Integer> map=new HashMap<>();
        /*
        * 将一组键值对存入Map，因为Map要求不允许有重复的key，因此若使用
        * 已有的key存放value那么就是替换value操作，此时方法返回值为被
        * 替换的value，否则返回值为null
        * */
        Integer v=map.put("语文", 66);
//        int v=map.put("语文", 66).intValue();
        /*
        * 若value包装类，那么接收时避免用基本类型，否则若返回值为null时
        * 自动拆箱会引发空指针异常
        * 下面代码会被编译器自动拆箱改为
        * int v=map.put("语文", 99).intValue();
        * */
        System.out.println(v);
        map.put("语文", 99);
        map.put("数学", 98);
        map.put("英语", 97);
        map.put("物理", 96);
        map.put("化学", 99);
        System.out.println(map);
//       替换value
         v=map.put("语文", 66);
        System.out.println(map);
        System.out.println(v);
         /*
            V get(Object key)
            根据给定的key获取对应的value。如果给定的key在Map中不存在则
            返回值为null
         */
         v= map.get("数学");
        System.out.println(v);
        v = map.get("体育");
        System.out.println(v);

        int size = map.size();
        System.out.println("size:"+size);

        /*
            V remove(Object key)
            删除给定的key所对应的键值对。返回值为该key对应的value
         */
        v = map.remove("数学");
        System.out.println(map);
        System.out.println(v);

        /*
            void clear()
            清空Map
         */
        map.clear();
        System.out.println(map);

    }
}
